package me.yobol.algorithm.inaction.netease.greedy;

/*
    ————————问题描述————————
        在N*M的草地上,提莫种了K个蘑菇,
    蘑菇爆炸的威力极大,兰博不想贸然去闯,而且蘑菇是隐形的.只有一种叫做扫描透镜的物品可以扫描出隐形的蘑菇,于是他回了一趟战争学院,
        买了2个扫描透镜,一个扫描透镜可以扫描出(3*3)方格中所有的蘑菇,
    然后兰博就可以清理掉一些隐形的蘑菇. 
        问:兰博最多可以清理多少个蘑菇?
    注意：每个方格被扫描一次只能清除掉一个蘑菇。

    ————————输入描述————————
    第一行三个整数:N,M,K,(1≤N,M≤20,K≤100),N,M代表了草地的大小;
    接下来K行,每行两个整数x,y(1≤x≤N,1≤y≤M).代表(x,y)处提莫种了一个蘑菇.
    一个方格可以种无穷个蘑菇.

    ————————输出描述————————
    输出一行,在这一行输出一个整数,代表兰博最多可以清理多少个蘑菇
*/


import java.util.Arrays;
import java.util.Scanner;

/**
 *
 * @author Yobol
 */
public class ScanningLens01 {
    
    /**
     * 
     * @param N 列
     * @param M 行
     * @param mushrooms 蘑菇所放点的集合
     * @return 
     */
    public static int scanning(int N,int M,int [][] mushrooms){
        int n = (int)Math.ceil(N / 3.0f);
        int m = (int)Math.ceil(M / 3.0f);
        int[] counters = new int[n * m];
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= m; j++) {
                int counter = 0;
                //每9个格归为一个范围
                for (int k = 1 + 3 * (i - 1); k <= N && k <= 3 * i; k++) {
                    for (int l = 1 + 3 * (j - 1); l <= M && l <= 3 * j; l++) {
                        
                        //看该格子中有多少蘑菇
                        for (int o = 0; o < mushrooms.length; o++) {
                            if (mushrooms[o][0] == k && mushrooms[o][1] == l) {
                                counter++;
                            }
                        }
                    }
                }
                counters[i * j - 1] = counter;
            }
        }
        
        Arrays.sort(counters);
//        for (int i = 0; i < counters.length; i++) {
//            System.out.println(counters[i] + " ");
//        }
        
        if (n * m <= 1) {
            return counters[0];
        }else{
            int size = counters.length;
            return counters[size - 1] + counters[size - 2];
        }
    }
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        while(input.hasNext()){
            int N,M,K;
            int[][] mushrooms;
            N = input.nextInt();
            M = input.nextInt();
            K = input.nextInt();
            mushrooms = new int[K][2];
            for (int i = 0; i < K; i++) {
                int x,y;
                x = input.nextInt();
                y = input.nextInt();
                mushrooms[i][0] = x;
                mushrooms[i][1] = y;
            }
            System.out.println(scanning(N,M,mushrooms));
        }
    }
}
